前一天有提到空間複雜度(Space Complexity),簡單的複習一下,空間複雜度指的是記憶體的使用效率。今天開始談到的資料結構,是可以有效改善記憶體使用效率的方法之一。常見的資料結構如下:
列表分為兩種,一種是有序列表,一種為無序列表。列表特性是使用線性搜尋的方式進行查找,所以會相對其他資料結構較慢一點點,不過這當然取決於你對程式所下的指令。列表的空間複雜度取決於列表的長度,這裡還是以Big O來表示,n為列表大小,因此一個列表的空間複雜度可以寫為O(n)。
接下來,來看看列表長什麼樣子:
#列表內部可以放數字、字串、數字+字串...
List1 = [1, 2, 3, 4, 5]
List2 = ["a", "b", "c", "d", "e"]
List3 = ["dog", "cat", 100, 1000]
# 也可以對列表進行增加、修改等等的操作
List4 = List1.copy()
List1.extend(List2) #用新列表擴展原本列表
print(f"擴增後的列表為:{List1}")
print(f"複製後的列表為:{List4}")
輸出結果如下:
擴增後的列表為:[1, 2, 3, 4, 5, 'a', 'b', 'c', 'd', 'e']
複製後的列表為:[1, 2, 3, 4, 5]
列表是一種很好運用的資料結構,也相對的容易理解,下列來看看列表的迴圈運用:
#這是一組簡單的程式碼,用來玩剪刀石頭布
rock = '''
_______
---' ____)
(_____)
(_____)
(____)
---.__(___)
'''
paper = '''
_______
---' ____)____
______)
_______)
_______)
---.__________)
'''
scissors = '''
_______
---' ____)____
______)
__________)
(____)
---.__(___)
'''
#將三組變數放入到列表中,再調用隨機的方式進行遊戲
game_image = [rock,paper,scissors]
user_chose = int(input("What do you choose? Type 0 for Rock, 1 for Paper or 2 for Scissors.\n"))
print(game_image[user_chose])
import random
company_chose = random.randint(0,2)
print(game_image[company_chose])
#列表的for循環
for i in range:
i +=1
if user_chose >=3 or user_chose <0:
print("You type is error.You lose!")
elif user_chose == 0 and company_chose == 1:
print("You Win!")
elif user_chose == 0 and company_chose == 2:
print("You lose!")
elif user_chose > company_chose:
print("You win!") #win
elif user_chose < company_chose:
print("You lose!") #lose
elif computer_choice == user_choice:
print("It's a draw")
print (i)
Python官方網站中有列表的進一步操作,很容易上手的操作,配上簡單的小遊戲,可以更容易了解列表這種資料結構。想進一步了解的人可以參考下列資訊:
https://docs.python.org/zh-tw/3/tutorial/datastructures.html